/** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ define([ 'jquery', 'ko', 'Magento_Captcha/js/action/refresh' ], function ($, ko, refreshAction) { 'use strict'; return function (captchaData) { return { formId: captchaData.formId, imageSource: ko.observable(captchaData.imageSrc), visibility: ko.observable(false), captchaValue: ko.observable(null), isRequired: ko.observable(captchaData.isRequired), isCaseSensitive: captchaData.isCaseSensitive, imageHeight: captchaData.imageHeight, refreshUrl: captchaData.refreshUrl, isLoading: ko.observable(false), timestamp: null, /** * @return {String} */ getFormId: function () { return this.formId; }, /** * @param {String} formId */ setFormId: function (formId) { this.formId = formId; }, /** * @return {Boolean} */ getIsVisible: function () { return this.visibility(); }, /** * @param {Boolean} flag */ setIsVisible: function (flag) { this.visibility(flag); }, /** * @return {Boolean} */ getIsRequired: function () { return this.isRequired(); }, /** * @param {Boolean} flag */ setIsRequired: function (flag) { this.isRequired(flag); }, /** * @return {Boolean} */ getIsCaseSensitive: function () { return this.isCaseSensitive; }, /** * @param {Boolean} flag */ setIsCaseSensitive: function (flag) { this.isCaseSensitive = flag; }, /** * @return {String|Number} */ getImageHeight: function () { return this.imageHeight; }, /** * @param {String|Number}height */ setImageHeight: function (height) { this.imageHeight = height; }, /** * @return {String} */ getImageSource: function () { return this.imageSource; }, /** * @param {String} imageSource */ setImageSource: function (imageSource) { this.imageSource(imageSource); }, /** * @return {String} */ getRefreshUrl: function () { return this.refreshUrl; }, /** * @param {String} url */ setRefreshUrl: function (url) { this.refreshUrl = url; }, /** * @return {*} */ getCaptchaValue: function () { return this.captchaValue; }, /** * @param {*} value */ setCaptchaValue: function (value) { this.captchaValue(value); }, /** * Refresh captcha. */ refresh: function () { var refresh, self = this; this.isLoading(true); refresh = refreshAction(this.getRefreshUrl(), this.getFormId(), this.getImageSource()); $.when(refresh).done(function () { self.isLoading(false); }); } }; }; });